package io.datajek.springbasics.movierecommendersystem.lesson8;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

//推荐电影方法的逻辑
//将过滤器的类型从基于内容改为协作式
//CollaborativeFilter-协同式过滤

//构造函数和setter注入的结果都是一样的。
// 然而，他们还是有一些区别。Setter注入更具有可读性，
// 因为它将依赖关系的名称指定为方法名称，
// 但是Setter方法的数量随着依赖关系的增加而增加，
// 增加了重复式代码

@Component
public class RecommenderImplementation2 {

    private io.datajek.springbasics.movierecommendersystem.lesson8.Filter Filter;


    @Autowired
    @Qualifier("CABF")
    public void setFilter(io.datajek.springbasics.movierecommendersystem.lesson8.Filter filter) {
        Filter = filter;
        System.out.println("Setter method invoked..");
    }

    public String[] recommendMovies (String movie) {
        System.out.println("正在使用的过滤器名称:" + Filter + "\n");
        //使用ContentBasedFilter来寻找类似的电影
//        CollaborativeFilter filter = new CollaborativeFilter();
        //上面的语句的filter不需要重新定义了
        //此处的输入参数暂时无用
        String[] results = Filter.getRecommendations("Finding Dory");
        //返回结果
        return results;
    }
}
